package Controle;

import java.beans.XMLDecoder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

import Dominio.Musica;
import Dominio.Usuario;

public class PersistenciaXML {
	
	private static PersistenciaXML instancia = null;
	
	private ListaDeObjetos<Musica> listaMusica;
	private int lastIdMusica;
	
	private ListaDeObjetos<Usuario> listaUsuario;
	private int lastIdUsuario;
	
	private PersistenciaXML(){
		listaMusica = new ListaDeObjetos<Musica>(10);
		listaUsuario = new ListaDeObjetos<Usuario>(10);
	}
	
	public static PersistenciaXML getPersistencia(){
		if(instancia == null){
			instancia = new PersistenciaXML();
		}
		return instancia;
	}
	
	public void setListaMusica(ListaDeObjetos<Musica> _lista){
		listaMusica = new ListaDeObjetos<Musica>(10);
		listaMusica = _lista;
	}
	
	public void setListaUsuario(ListaDeObjetos<Usuario> _lista){
		listaUsuario = _lista;
	}
	
	public ListaDeObjetos<Musica> getListaMusica(){
		return listaMusica;
	}
	
	public ListaDeObjetos<Usuario> getListaUsuario(){
		return listaUsuario;
	}
	
	public void setLastIdMusica(int _lastId){
		lastIdMusica = _lastId;
	}
	
	public void setLastIdUsuario(int _lastId){
		lastIdUsuario = _lastId;
	}
	
	public int getLastIdMusica(){
		return lastIdMusica;
	}
	
	public int getLastIdUsuario(){
		return lastIdUsuario;
	}
	
	public void carregaDados(String _fileName) throws FileNotFoundException{
		String file_name = _fileName;
        FileInputStream m_fis = null;
        ObjectInputStream m_in = null;
        XMLDecoder m_xdec;

        m_fis = new FileInputStream(file_name);

        m_xdec = new XMLDecoder(m_fis);

        ListaDeObjetos<Musica> list = null;

        list = new ListaDeObjetos<Musica>(10);

        ListaDeObjetos<String> str_list;
        str_list = new ListaDeObjetos<String>(10);

        str_list = (ListaDeObjetos<String>) m_xdec.readObject();
        
        if(_fileName == "MusicModel.xml"){
        	if (str_list == null)
                list = new ListaDeObjetos<Musica>(10);
            else{
                int size = str_list.size();
                int i = 0;
                while (i < size){
                    Musica _music;
                    _music = new Musica();
                    _music.setNome(str_list.get(i));
                    i++;
                    _music.setArtista(str_list.get(i));
                    i++;
                    _music.setGravadora((str_list.get(i)));
                    i++;
                    _music.setEstilo(Controlador.getControlador().getEstiloInt(str_list.get(i)));
                    i++;
                    _music.setDataLanc(Controlador.getControlador().converteStringData(str_list.get(i)));                  
                    i++;
                    list.add(_music);
                }
                //lastMusicaId = str_list.get(i);
            }
        	
        	listaMusica = list;
        }
            
        
    }

}
